[小ネタ]CloudWatch Agent で Agent 自身のプロセス監視を行なう
アノテーション株式会社のあのふじたです。
最近 CloudWatch Agent をインストールしている EC2 の Agent 自身のプロセス監視はどうすれば良いのかという疑問が湧くことがあったので試して見ました。
CloudWatch Agent とは
Cloudwatch Agent は Amazon が提供するツールで、 Amazon EC2 インスタンスやオンプレミスサーバーにインストールすることで メトリクス、ログ、トレースを収集できます。
参考URL:
aws/amazon-cloudwatch-agent
CloudWatch エージェントを使用して Amazon EC2 インスタンスとオンプレミスサーバーからメトリクス、ログ、トレースを収集する
CloudWatch エージェントでプロセス監視をする方法
DevelopersIOの過去記事 CloudWatch エージェントでプロセスの死活監視をする方法
今回はほぼこの手順を参考に設定を行います。
作業手順
1. EC2 にアタッチする IAM ロール 作成
EC2 にアタッチする IAM ロール を作成します。
CloudWatchAgent用のポリシーとSSMセッションマネージャーの管理ポリシーも付与しておきます。
参考URL: CloudWatch エージェントで使用する IAM ロールを作成する
2. CloudWatch Agent install
作成した EC2(Amazon Linux 2023) に SSM セッションマネージャー でログインし
$ sudo yum install amazon-cloudwatch-agent
3. CloudWatch Agent サービスの自動起動設定有効化と同時に起動
$ sudo systemctl enable amazon-cloudwatch-agent --now
4. プロセスの確認
$ sudo su - $ pstree -qa
プロセス名は amazon-cloudwat
と15文字制限で表示されているようですが
今回のプロセス監視設定ではこれでも問題なさそうです。
top
でも念の為確認します。
5. 設定ファイルを作成
プロセス名が判明したので今回は手動で設定ファイルを作成します。
公式ドキュメントに従い /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
を作成します。
参考URL:CloudWatch エージェント設定ファイルを手動で保存するには
CloudWatch エージェント設定ファイルを手動で作成または編集する場合は、任意の名前を付けることができます。トラブルシューティングを簡単にするため、Linux サーバーでは、/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json、Windows Server を実行しているサーバーでは、$Env:ProgramData\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent.json という名前を付けることをお勧めします。
$ cd /opt/aws/amazon-cloudwatch-agent/etc/ $ vi amazon-cloudwatch-agent.json
{ "metrics": { "metrics_collected": { "procstat": [ { "exe": "amazon-cloudwat", "measurement": [ "pid_count" ], "metrics_collection_interval": 60 } ] } } }
今回は exe
の正規表現の照合ルールを使用して amazon-cloudwat
を指定します。
参考URL: procstat プラグインでプロセスメトリクスを収集する
6. 設定の反映
設定の反映のため Cloudwatch Agent を再起動しておきます。
$ sudo systemctl restart amazon-cloudwatch-agent
7. プロセス起動中の Cloudwatch Metrics 確認
マネジメントコンソールから確認します。
無事 amazon-cloudwat
としてプロセスのメトリクスが取得できています。
では Cloudwatch Agent を停止してみます。
$ sudo systemctl stop amazon-cloudwatch-agent
8. プロセス停止中の Cloudwatch Metrics 確認
マネジメントコンソールから確認します。
停止後は amazon-cloudwatとしてプロセスのメトリクスが取得できなくなっています。
再度 Cloudwatch Agent を起動します
$ sudo systemctl start amazon-cloudwatch-agent
9. 再起動後の Cloudwatch Metrics 確認
マネジメントコンソールから確認します。
再度 amazon-cloudwat
としてプロセスのメトリクスが取得できています。
まとめとして
プロセスが落ちている間はメトリクス取得ができないという想定通りの挙動でした。 どうしてもCloudWatch Agentを落としてはいけないような場合ではメトリクスのデータが一定時間取得できない状態をトリガーとしてアラート設定での通知や自動復旧を行えば対応できそうです。
アノテーション株式会社について
アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。
サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。
当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。